package com.epalmpay.service.member;


import java.util.List;
import java.util.Map;

import com.epalmpay.dto.member.MemberInDTO;
import com.epalmpay.dto.memberGrade.MemberGradeInDTO;
import com.epalmpay.dto.memberGrade.MemberGradeOutDTO;
import com.epalmpay.dto.shopuser.ShopUserInDTO;
import com.epalmpay.entity.MemberFee;
import com.epalmpay.entity.MemberGrade;
import com.epalmpay.enumdef.BizEnum;
import com.epalmpay.util.excel.Excel;

public interface IMemberGradeService {
	/**
	 * 会员等级列表查询
	 * @param memberGradeOut
	 * @return
	 */
	List<MemberGradeOutDTO> listMembers(MemberGradeInDTO memberGradeOut) throws Exception;
	
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_member_grade
     *
     * @mbggenerated
     */
    int deleteByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_member_grade
     *
     * @mbggenerated
     */
    int insert(MemberGrade record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_member_grade
     *
     * @mbggenerated
     */
    MemberGrade selectByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_member_grade
     *
     * @mbggenerated
     */
    List<MemberGrade> selectAll();

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table t_member_grade
     *
     * @mbggenerated
     */
    int updateByPrimaryKey(MemberGrade record);
    

    
    /**
     * 保存会员等级
     * @param memberGradeInDTO
     */
	void saveMemberGrade(MemberGradeInDTO memberGradeInDTO) throws Exception;
	/**
	 * 通过id获取数据
	 * @param memberGrade
	 * @return
	 */
	MemberGrade findById(MemberGrade memberGrade)throws Exception;
	/**
	 * 编辑会员等级信息
	 * @param memberGrades
	 */
	void editMemberGrade(MemberGrade memberGrades)throws Exception;
	/**
	 * 删除会员等级信息
	 * @param memberGrade
	 */
//	void deleteMemberGrade(MemberGrade memberGrade);

	
	/**
	 * 查询会员等级列表
	 * @return
	 */
//	List<MemberGrade> getGradeList()throws Exception;
	/**
	 * 查看会员等级详情信息
	 * @param memberGrade
	 * @return
	 */
	MemberGrade queryMemberGradeById(MemberGrade memberGrade)throws Exception;

	
    List<Map> getAllMemberGradeIdAndName(Long groupId)throws Exception;

	List<MemberGrade> getGradeList(MemberInDTO memberInDTO)throws Exception;

	List<MemberGrade> queryGradeList(MemberInDTO memberInDTO)throws Exception;

	List<MemberGrade> getShopGradeList(ShopUserInDTO shopUserInDTO)throws Exception;



	MemberGradeOutDTO findAmountByUpdateAmount(MemberGradeInDTO memberGradeOut)throws Exception;


    MemberGradeOutDTO findAmountByUpdateAmount2(MemberGradeInDTO memberGradeOut)throws Exception;

    List<MemberFee> queryFees(MemberGradeInDTO memberGradeOut)throws Exception;

    MemberGrade queryByUpdateAmount(Long id)throws Exception;

    //等级会员权限判断
    void memberRigthCheck(Long gradeId,BizEnum.MemberRigth memberRigth) throws Exception;

    List<MemberGrade> memberGrades(MemberGradeInDTO memberGradeInDTO)throws Exception;
}